/*
 * @Author: DUST
 * @Date: 2023-06-26 09:51:44
 * @LastEditors: DUST
 * @LastEditTime: 2023-06-26 10:33:18
 * @FilePath: \national-standard-platform-alarm-screen\src\utils\ckThree\spriteMarker.js
 * @Description: 
 * undefined
 */
import * as THREE from "three";

/**
 * @description: 加载图片素材集合
 * @param {*} imgList:图片素材数组
 * @return 图片素材生成的材质
 */
export const loadTextures = (imgList) => {
  const arr = [];
  imgList.forEach(val => {
    arr.push(new THREE.TextureLoader().load(val));
  });

  return arr;
}
/**
 * @description: 根据点位信息，及贴图素材生成精灵图标
 * @param {*} point：点位坐标信息
 * @param {*} texture：特图素材
 * @param {*} data：点位信息
 * @param {*} options：杂项参数-scale:缩放比例。
 * @return {*}返回精灵图标
 */
export const loadSpriteMarker = (point, texture, data, options = { scale: 2 }) => {
  // 生成材质
  const material = new THREE.SpriteMaterial({
    map: texture,
    transparent: true,
  });
  // 生成标注
  const spriteMarker = new THREE.Sprite(material);
  // 缩放
  spriteMarker.scale.set(options.scale, options.scale, options.scale);
  // 坐标位置
  spriteMarker.position.set(point.x, point.y, point.z);
  // 存储点位信息
  spriteMarker.userData.data = data;
  // 给点位命名
  spriteMarker.name = data.name;

  return spriteMarker;
}
/**
 * @description: 加载精灵图标集合
 * @param {*} points：点集信息
 * @param {*} textures：贴图素材集合
 * @param {*} group：组合对象
 * @param {*} options：配置项
 * @return {*}
 */
export const loadSpriteMarkers = (points, textures, group, options = { scale: 2 }) => {
  points.forEach(val => {
    const sprite = loadSpriteMarker(val.position, textures[val.type], val, options);
    group.add(sprite);
  })
}